package org.chameleon.lang;


import org.chameleon.lang.cache.Refreshable;

import java.util.Map;

public interface ConfigAbleManager<T> extends ConfigManager<T>, Refreshable<Map<String,T>>, ConfigChangeListener<Map<String,T>> {


    /**
     * 从数据源获取配置
     * @param t 配置
     * @return t
     */
    T loadFromDateSource(T t);

    /**
     * 自定义自己cache
     * @param t
     * @return
     */
   String buildCacheKey(T t);

    /**
     * 增加refresh的能力
     * @param refreshable
     */
    void addRefreshListener(Refreshable<Map<String,T>> refreshable);

}
